package com.example.schoolhelp.util;

import java.security.MessageDigest;

/**
 * Created by user on 2017/6/22.
 */

public class MD5 {

    public static String encrypt(String data) {
        //1.信息摘要器
        try {
            MessageDigest digest = MessageDigest.getInstance("md5");
            //2.变成byte数组
            byte[] bytes = digest.digest(data.getBytes("utf-8"));
            StringBuffer buffer = new StringBuffer();
            //3.每一个byte与8个二进制做与运算，
            for (byte b : bytes) {  //0xff就代表八个二进制
                //这是标准的运算；但是这种运算基本上破解很简单。要想使密码破解很困难的话，
                //就在二进制的0xff后面加字符。比如不用0xff，而是用0xfff，或者0xffef；
                int number = b& 0xff;
//                int number = b & 0xffef;
                //4.把int转换成十六进制
                String numberStr = Integer.toHexString(number);

                //5.不足八位的补全
                if (numberStr.length() == 1) {
                    buffer.append("0");
                }
                buffer.append(numberStr);
            }

            //buffer.toString()得到的值就是一个标准的md5加密后的结果
            System.out.println(buffer.toString());
            return buffer.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}
